package com.stu.util;

import java.sql.*;
import java.util.Properties;

public class JdbcUtils {
    private static String driver;//驱动类名
    private static String url;//数据库连接地址
    private static String user;//用户名
    private static String password;//密码
    private static Properties pr = new Properties();//去读配置文件的对像
    // 私有构造函数，防止实例化
    private JdbcUtils() {
    }

    static {
        try {
            // 加载配置文件
            pr.load(JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"));
            driver = pr.getProperty("driver");
            url = pr.getProperty("url");
            user = pr.getProperty("username");
            password = pr.getProperty("password");
            // 加载数据库驱动
            Class.forName(driver);
        } catch (Exception e) {
            // 如果初始化过程中发生异常，抛出异常并包含原始异常信息
            throw new ExceptionInInitializerError(e);
        }
    }

    // 获得连接对象
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url, user, password);
    }

    // 释放资源
    public static void free(ResultSet rs, PreparedStatement ps, Connection conn) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException e) {
            // 在释放资源时捕获并处理可能的SQL异常
            e.printStackTrace();
        }
    }
}
